home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / etc / pcmcia / shared < prev    next >
Text File  |  2005-10-18  |  4KB  |  178 lines

  1. #
  2. # shared 1.31 2002/08/19 03:21:11 (David Hinds)
  3. #
  4.  
  5. usage ()
  6. {
  7.     echo "usage: $0 [action] [device name]"
  8.     echo "  actions: start check stop suspend resume"
  9.     exit 1
  10. }
  11.  
  12. is_true ()
  13. {
  14.     [ "$1" = "y" -o "$1" = "Y" -o "$1" = "yes" -o "$1" = "YES" ]
  15. }
  16.  
  17. do_fuser ()
  18. {
  19.     is_true $NO_FUSER && return 1
  20.     fuser $*
  21. }
  22.  
  23. do_eval () { eval $* ; }
  24.  
  25. match () { case $1 in $2) return 0; ;; *) return 1; ;; esac ; }
  26.  
  27. log ()
  28. {
  29.     if [ -n "$VERBOSE" ] ; then
  30.     echo "$*" ; eval $*
  31.     else
  32.     # if command fails, print the command followed by its output
  33.     RET=0
  34.     LOG=/var/run/cardmgr.out
  35.     do_eval $* >$LOG 2>&1
  36.     if [ $? -ne 0 ] ; then RET=$? ; echo "$*" ; fi
  37.     cat $LOG 1>&2 ; rm -f $LOG
  38.     return $RET
  39.     fi
  40. }
  41.  
  42. add_blkdev ()
  43. {
  44.     # usage: add_blkdev [device]
  45.     if [ -n "$LINK" ] ; then
  46.     if [ -L $LINK ] ; then rm $LINK ; fi
  47.     ln -s $1 $LINK || return 1
  48.     fi
  49.     if is_true $DO_FSTAB ; then
  50.     echo "$1 $MOUNTPT ${FSTYPE:-auto} ${OPTS:-defaults} 0 0" >> /etc/fstab
  51.     fi
  52.     if is_true $DO_FSCK ; then
  53.     log /sbin/fsck -Ta $1
  54.     if [ $? -gt 1 ] ; then return 1 ; fi
  55.     fi
  56.     if is_true $DO_MOUNT ; then
  57.     O=${OPTS:+-o $OPTS} ; FS=${FSTYPE:+-t $FSTYPE}
  58.     log mount -v $O $FS $1 $MOUNTPT || return 1
  59.     fi
  60.     return 0
  61. }
  62.  
  63. add_parts ()
  64. {
  65.     # usage: add_parts [address] [parts]
  66.     RET=0
  67.     for PART in ${2:-""} ; do
  68.     # Get mount options for particular partitions
  69.     if [ -n "$PART" ] ; then
  70.         ADDRESS="$1,$PART"
  71.         unset INFO DO_FSTAB DO_FSCK DO_MOUNT LINK
  72.         . $0.opts
  73.         [ -n "$VERBOSE" -a -n "$INFO" ] && echo "$INFO"
  74.     fi
  75.     add_blkdev /dev/$DEVICE$PART || RET=1
  76.     done
  77.     return $RET
  78. }
  79.  
  80. rm_blkdev ()
  81. {
  82.     # usage: rm_blkdev [device]
  83.     test -b $1 || return 1
  84.     do_fuser -k -m $1 > /dev/null
  85.     if mount | grep -q "$1 on" ; then
  86.     log umount -v $1 || return 1
  87.     fi
  88.     if is_true $DO_FSTAB ; then
  89.     grep -v $1 /etc/fstab > /etc/fstab.N
  90.     mv /etc/fstab.N /etc/fstab
  91.     fi
  92.     if [ -L "$LINK" ] ; then rm $LINK ; fi
  93. }
  94.  
  95. rm_parts ()
  96. {
  97.     # usage: rm_parts [address] [parts]
  98.     BLK=/dev/$DEVICE
  99.     test -b $BLK || return 1
  100.     for PART in ${2:-""} ; do
  101.     if [ -n "$PART" ] ; then
  102.         ADDRESS="$1,$PART"
  103.         unset DO_FSTAB DO_FSCK DO_MOUNT
  104.         . $0.opts
  105.     fi
  106.     if is_true $DO_FSTAB ; then
  107.         grep -v "$BLK$PART " /etc/fstab > /etc/fstab.N
  108.         mv /etc/fstab.N /etc/fstab
  109.     fi
  110.     done
  111.     do_fuser -k -m /dev/${DEVICE}* > /dev/null
  112.     LIST=`mount | sed -ne "s+^\($BLK[0-9]*\) .*+\1+p"`
  113.     if [ -n "$LIST" ] ; then
  114.     for MT in $LIST ; do
  115.         log umount -v $MT || return 1
  116.     done
  117.     fi
  118. }
  119.  
  120. chk_simple ()
  121. {
  122.     # usage: chk_simple [new-address]
  123.     ADDRESS=""
  124.     OLD=`set | grep -v '^OLD=' | md5sum`
  125.     ADDRESS="$1"
  126.     . $0.opts
  127.     ADDRESS=""
  128.     NEW=`set | grep -v '^OLD=' | md5sum`
  129.     [ "$OLD" = "$NEW" ]
  130. }
  131.  
  132. chk_parts ()
  133. {
  134.     # usage: chk_parts [new-address]
  135.     OLD_ADDR="$ADDRESS"
  136.     chk_simple $1 || return 1
  137.     if [ -z "$PARTS" ] ; then return 0 ; fi
  138.     for PART in $PARTS ; do
  139.     ADDRESS="$OLD_ADDR,$PART"
  140.     . $0.opts
  141.     chk_simple "$1,$PART" || return 1
  142.     done
  143. }
  144.  
  145. grep_stab ()
  146. {
  147.     # this should be cheaper than invoking "grep"
  148.     local DEV
  149.     while read SOCKET CLASS DRIVER INSTANCE DEV MAJOR MINOR ; do
  150.     if [ "$SOCKET" != "Socket" -a "$1" = "$DEV" ] ; then return 0 ; fi
  151.     done
  152.     return 1
  153. }
  154.  
  155. get_info ()
  156. {
  157.     if [ -f /var/lib/pcmcia/scheme ] ; then
  158.     SCHEME=`cat /var/lib/pcmcia/scheme`
  159.     elif [ -f /var/run/pcmcia-scheme ] ; then
  160.     SCHEME=`cat /var/run/pcmcia-scheme`
  161.     fi    
  162.     if [ -z "$SCHEME" ] ; then SCHEME="default" ; fi
  163.     if [ -z "$CLASS" -o -z "$MANFID" ] ; then
  164.     if [ -d /var/lib/pcmcia ] ; then
  165.         STAB=/var/lib/pcmcia/stab
  166.     else
  167.         STAB=/var/run/stab
  168.     fi
  169.     grep_stab $1 < $STAB || usage
  170.     eval `/sbin/cardctl info $SOCKET`
  171.     fi
  172. }
  173.  
  174. # A bit of stuff to do right away...
  175.  
  176. if [ $# -lt 2 ] ; then usage ; fi
  177. ACTION=$1 ; DEVICE=$2 ; NEW_SCHEME=$3
  178.